package com.sanbi.common.express.response;

import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @description: 批量查询出库委托
 * @author: wanpeng
 * @create: 2024-05-14 08:58
 * @Version 1.0
 **/
@Data
public class OutBoundInfoResult implements Serializable {

    /**
     *	出库委托单集合信息
     */
    private List<OutBound> data;
    /**
     * 出库委托单信息
     */
    @Data
    public static class OutBound {
        /** 出库委托单号。如：OC9002781804180098 */
        private String consignment_no;
        /** 客户操作账号 */
        private String customer_code;
        /** 菜鸟跟踪号。菜鸟唯一跟踪号。可用于在菜鸟轨迹系统查询 */
        private String cainiao_tracking_no;
        /** 客户参考号。如：REF234234223 */
        private String ref_no;
        /** 发货仓库代码。详细参考公共服务，获取仓库代码 */
        private String from_warehouse_code;
        /** 出库委托状态。可选值：N（草稿）；S（出库中）；P（已下架）；C（已出库）；X（已取消）；D（已删除）；E（异常）*/
        private String status;
        /** 委托类型可选值：S(标准出库);D(下架销毁);R(退仓出库);O(其他出库) */
        private String consignment_type;
        /** 物流产品代码。详细参考基础数据-获取物流产品代码 */
        private String logistics_product_code;
        /** 出库退件标识。如：N（未退件）;R1（服务商退件）;R2（GRS退件）;R9（GRS取消退件） */
        private String return_flag;
        /** 退件服务。如：Y(选择退件服务)；N(不选择退件服务)。 */
        private String return_service;
        /** 	单独报关。如：N(否);YRR (单独报关且退税); YNR(单独报关不退税)。 */
        private String customs_service;
        /** 签名服务。如：Y(选择签名服务)；N(不选择签名服务)。 */
        private String signature_service;
        /** 物流单号 */
        private String shipping_no;
        /** 出库委托单总重量，重量单位为：g(克)。如：1234 */
        private String total_weight;
        /** 出库委托单计费重，重量单位为：g(克)。如：1234 */
        private String billing_weight;
        /** 出库委托单签出重，重量单位为：g(克)。如：1234 */
        private String shipping_weight;
        /** 出库委托单总体积，重量单位为：cm³(立方厘米)，精确到3位小数。如：1234.84 */
        private String total_volume;
        /** 出库委托单计费金额，精确到2位小数。如：1234.84 */
        private String billing_amount;
        /** 计费币种，采用国际ISO标准。如：USD(美元);CNY (人民币)。 */
        private String currency;
        /** 是否偏远邮编。*/
        private String is_oda;
        /** 销售平台如：AE(速卖通);WS(Wish);EB(eBay);AM(亚马逊);TM(天猫国际);JD(京东) */
        private String sales_platform;
        /** 卖家ID */
        private String seller_id;
        /** 销售/平台交易号 */
        private String sales_no;
        /** 保险服务如：8Y(平邮保价);5Y(挂号-快递保价);6P(0.6%保险) */
        private String insure_services;
        /** 投保金额币别，采用国际ISO标准。可选值：USD(美元)。如：USD */
        private String insure_value;
        /** 出库委托单审核人 */
        private String audit_user;
        /** 出库委托单审核时间。*注：时间格式：传入时间值需要转换为long类型格式。 */
        private Long audit_time;
        /** 出库委托单创建时间。*注：时间格式：传入时间值需要转换为long类型格式。 */
        private Long create_time;
        /** 出库委托单创建人 */
        private String create_user;
        /** 出库委托单修改时间。*注：时间格式：传入时间值需要转换为long类型格式 */
        private Long update_time;
        /** 出库委托单修改人 */
        private String update_user;
        /** 出库委托单出库时间。*注：时间格式：传入时间值需要转换为long类型格式。 */
        private Long complete_time;
        /** 备注。客户填写的出库委托备注信息。 */
        private String remark;
        /** 	收件人所在国家;国家二字码，详细参考国际二字码。如：CN（中国）*/
        private String country;
        /** 收件人所在州/省; 如 ：广东省 */
        private String state;
        /** 收件人所在城市; 如 ：深圳市 */
        private String city;
        /** 收件人所在区/县; 如 ：宝安区 */
        private String district;
        /** 收件人的邮编; 如 ：518000 */
        private String post_code;
        /** 收件人所在街道/详细地址 ; 如：西乡街道西乡宝源路 */
        private String street;
        /** 收件人的门牌号; 如 ：138 */
        private String house_number;
        /** 收件人的公司; 如 ：CAINIAO */
        private String company;
        /** 收件人姓; 如 ：张 */
        private String last_name;
        /** 收件人名; 如 ：者 */
        private String first_name;
        /** 收件人的电话号码/手机号; 如 ：0755-29771100 */
        private String phone;
        /** 收件人的Email; 如 ：test@163.com */
        private String email;
        /** 收件人证件号 */
        private String id_card;
        /** 出库委托SKU集合 */
        private List<OutBoundSku> outboundlist_sku;
        /** 出库委托SKU序列号（SN码）集合 */
        private List<OutBoundSerialNo> outboundlist_serial_no;

    }

    /**
     * 出库委托SKU集合
     */
    @Data
    public static class OutBoundSku implements Serializable{
        /** SKU编码。当前箱对应的SKU信息。如：TEST001 */
        private String sku_code;
        /** 出库SKU失效日期;当前出库委托SKU的有效期。*注：返回时间值格式为long类型，接收到值后需要对long类型值进行转换。 */
        private Long expired_date;
        /** SKU出库数量 */
        private String qty;
        /** SKU库存质量。如：G（良好）; B（破损）; C（违禁品）; W（淋湿）; M（霉变）; E（异常）。 */
        private String stock_quality;
        /** 数字条码 */
        private String sku_id;
        /** SKU名称 */
        private String sku_name;
        /** SKU出库批次号 */
        private String batch_no;
        /** 商品条码 */
        private String product_code;
    }

    /**
     * 出库委托SKU序列号
     */
    @Data
    public  static class OutBoundSerialNo {
        /** SKU商品序列号（SN码） */
        private String serial_no;
        /** SKU编码 */
        private String sku_code;
        /** 数字条码 */
        private String sku_id;
    }
    /** 异常子状态： G（欠费）；B（计费异常）；R（审核失败）；S（缺货） */
    private String sub_status;
    /** 	轨迹状态：Y（异常）；N（正常） */
    private String tracking_status;
    /** 换号异常信息 */
    private String error_message_origin;
    /** 页码 */
    private String page_no;
    /** 每页记录数 */
    private String page_size;
    /** 总记录数 */
    private String total;
    /** VC 客户托盘自提交接单（自提图片） */
    private String vcfba_picture_url;
    /** 包裹信息 */
    private List<String> consignment_packages;
    /** 委托单号 */
    private String consignment_no;
    /** 长, 单位cm */
    private String length;
    /** 宽, 单位cm */
    private String width;
    /** 高, 单位cm */
    private String height;
    /** 包装类型 */
    private String package_type;
    /** 包裹重，单位kg */
    private String package_weight;
}
